package frsf.cidisi.exercise.idemiatp.situationCalculus.actions;

import frsf.cidisi.exercise.idemiatp.situationCalculus.StateArquelogo;
import frsf.cidisi.exercise.idemiatp.situationCalculus.StateIsla;
import frsf.cidisi.faia.agent.situationcalculus.SituationCalculusAction;
import frsf.cidisi.faia.state.AgentState;
import frsf.cidisi.faia.state.EnvironmentState;

public class IrBulovoe extends SituationCalculusAction {

    @Override
    public EnvironmentState execute(AgentState ast, EnvironmentState est) {
        
    	StateIsla environmentState = (StateIsla) est;
        StateArquelogo agState = ((StateArquelogo) ast);

        String ciudadActual = agState.getPosicion();
        
        if((ciudadActual.equals("icaedur") || ciudadActual.equals("ergintone"))&& 
        		!agState.getCiudadesVisitadas().contains("bulovoe")) {
            // Update the real world
    	
            environmentState.setPosicionArquelogo("bulovoe");
            // Update the agent state
            agState.getCiudadesVisitadas().add("bulovoe");

            agState.setPosicion("bulovoe");
            
            return environmentState;
        }

        return null;
    }

    @Override
    public String toString() {
        return "IrBulovoe";
    }
}

